<?php
/**
 * Controller_Admin_Article
 *
 * Класс Controller_Admin_Article отвечает за обработку статей в админке
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Controller_Admin_Article extends Controller_Admin {

	/**
	 * Выбор действия по URL
	 *
	 */
	public function action() {
		Service_Debug::setDebug();
		switch ($this->arrRequest[2]) {
			case '': case 'list':
				$this->actionList();
			  break;
			case 'add':
				$this->actionAdd();
				break;
			case 'edit':
				if (!is_numeric($this->arrRequest[3])) $this->setError(404);
				else { 
					$objArticle = new Article($this->arrRequest[3]);
					if ($objArticle->id) $this->actionEdit($objArticle);
					else $this->setError(404);
				}
				break;
			default:
				$this->setError(404);
				break;
		}
	}

	/**
	 * Выводит список существующих статей
	 * 
	 */
	public function actionList() {
	  Service_Debug::setDebug();
	  $objArticle = new Article();
	  $arrArticles = $objArticle->find('all', array('order' => "article_name_ru ASC"));
	  
	  $this->title = $this->pageHead = 'Список статей';
	  $this->addUrl = W_ADMIN . 'articles/add/';
	  
	  $objViewArticle = new View_Article();
	  
	  $this->showHeader();
	    $objViewArticle->showAdminList($arrArticles);
		$this->showFooter();
	}
	
	/**
	 * Страница добавления статей 
	 */
	public function actionAdd() {
	  Service_Debug::setDebug();
	  if (isset($_POST['Article'])) {
			$objArticle = new Article($_POST['Article']);
			if ($objArticle->save()) User_Session::moveTo(W_ADMIN . 'articles/', 'Статья успешно добавлена', 1);
		}
		else $objArticle = new Article();
		
	  $this->pageHead = 'Добавление статьи';
	  $objViewArticle = new View_Article();
	  $this->addWysiwygMetas();

	  $this->showHeader();
	    $objViewArticle->showEditForm($objArticle);
		$this->showFooter();
	}
	
  /**
   * Выводит страницу редактирования статьи
   * 
   * @param Article $objArticle - объект статьи для редактирования
   */
  public function actionEdit(Article $objArticle) {
		$editId = $objArticle->id;
  	if (isset($_POST['Article'])) {
			$objArticle = new Article($_POST['Article']);
			if ($objArticle->id != $editId) User_Session::moveTo(View_Base::getLanguageUrl(W_ADMIN) . 'articles/', Service_Translate::getText('Недопустимое действие'));
			if ($objArticle->save()) User_Session::moveTo(W_ADMIN . 'articles/', 'Статья успешно сохранена', 1);
		}
  	
  	$objViewArticle = new View_Article();
  	$this->pageHead = $this->title = 'Редактирование статьи "' . $objArticle->getField('article_name_ru') . '"';
  	$this->addUrl = W_ADMIN . 'articles/add/';
  	$this->addWysiwygMetas();
    
  	$this->showHeader();
      $objViewArticle->showEditForm($objArticle);
    $this->showFooter();
  }
  
}
?>